<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script>

//【示例1】在下面条件结构中，由于字符串变量a的逻辑值可以转换为true，则逻辑或运算符在执行左侧的a = "string"赋值表达式之后，就不再执行逻辑或运算符右侧的定义对象结构体。所以，最后在执行条件结构内的alert(b.a);语句时，就会返回对象b没有定义的错误提示。
if(a = "string" || (b = 		// 执行逻辑或操作
    { 							// 定义对象结构体
       a : "string"				// 定义对象的属性a
    })
) alert(b.a); 					// 调用对象b的属性a

if(a = "string" && (b = 		// 执行逻辑与操作
    { 							// 定义对象结构体
       a : "string" 				// 定义对象的属性a
    })
) alert(b.a); 					// 调用对象b的属性a，返回字符串"string"

if(a = 0 && (b = 				// 执行逻辑或操作
    { 							// 定义对象结构体
       a : "string" 				// 定义对象的属性a
    })
) alert(b.a); 					// 调用对象b的属性a，没有被执行

//【示例2】逻辑与和逻辑或是两个相互补充的逻辑操作，结合它们你可以设计出很多结构复杂而又巧妙的的逻辑运算表达式。例如，下面结构是一个复杂的嵌套结构，它根据变量a的布尔值来判断是否执行一个循环体。
var a = b = 2; 					// 定义并连续初始化
if(a){ 							// 条件结构
   while(b ++ < 10){ 			// 循环结构
      alert(b ++);				// 循环执行语句
   }
}

var a = b = 2; 					// 定义并连续初始化
while(a && b ++ < 10) alert(b ++ ); // 循环体。逻辑与运算符合并的多条件表达式

while(b ++ < 10){ 				// 先执行循环
   if(a){ 						// 再判断条件
      alert(b ++);
   }
}

</script>
</head>
<body>




</body>
</html>
